﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace projetoFinal.pages.chamado
{
    public partial class editarChamado : baseWebPage
    {
        protected void Page_Init(object sender, EventArgs e)
        {
            base.Modulo = operaModulo.buscar("CHAMADO");
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //Arruma o diretório das imagens
                menuTopo.setDiretorio("../");
                menuEsquerda.setDiretorio("../");

                btnSalvar.Attributes.Add("onclick", "javascript:return validateForm('frmDados');");

                if (Request["id"] != null)
                {
                    //No caso de edição
                    if (!base.CanUpdate)
                    {
                        this.btnSalvar.Visible = false;
                        this.information.Visible = true;

                        this.lblTitleInformation.Text = "Aviso!";
                        this.lblMessageInformation.Text = "Você não possui permissão para editar registros!";
                    }

                    projetoFinal.chamado objChamado = operaChamado.buscar(Int64.Parse(Request["id"].ToString()));
                    txtCodigo.Value = objChamado.CodChamado.ToString();
                    txtNumChamado.Value = objChamado.NumChamado.ToString();
                    txtAssociado.Value = objChamado.Associado.Nome.ToString();
                    txtFone.Value = objChamado.Associado.Fone.ToString();
                    txtPlaca.Value = objChamado.AssociadoCarro.Placa.ToString();
                    txtMarca.Value = objChamado.AssociadoCarro.Marca.ToString();
                    txtModelo.Value = objChamado.AssociadoCarro.Modelo.ToString();
                    txtAno.Value = objChamado.AssociadoCarro.Ano.Value.ToString();
                    txtTipoProblema.Value = objChamado.TipoProblema.Descr.ToString();
                    txtEndereco.Value = objChamado.Endereco.ToString();
                    txtNumero.Value = objChamado.Numero.ToString();
                    txtCidade.Value = objChamado.Cidade.ToString();
                    txtUf.Value = objChamado.Uf.ToString();
                    txtDescricao.Value = objChamado.Descricao;

                    if (objChamado.TipoServico != null)
                    {
                        bindTipoServico(objChamado.TipoServico.CodTipoServico);
                    }
                    else
                    {
                        bindTipoServico(0);
                    }

                    txtPrestadorServico.Value = objChamado.Prestador.Nome.ToString();
                    switch (objChamado.Status)
                    {
                        case statusChamado.atendido:
                            txtDescricao.Disabled = true;
                            selTipoServico.Disabled = true;
                            radStatusAtendido.Checked = true;
                            btnSalvar.Visible = false;
                            break;
                        case statusChamado.cancelado:
                            txtDescricao.Disabled = true;
                            selTipoServico.Disabled = true;
                            radStatusCancelado.Checked = true;
                            btnSalvar.Visible = false;
                            break;
                        case statusChamado.emAberto:
                            radStatusAberto.Checked = true;
                            break;
                        case statusChamado.emAndamento:
                            radStatusAndamento.Checked = true;
                            break;
                    }
                }
                else
                {
                    Response.Redirect("listagem.aspx", true);
                }
            }
        }
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            projetoFinal.chamado objChamado = null;
            if (Request["id"] != null)
            {
                statusChamado s = statusChamado.emAberto;
                if(radStatusAtendido.Checked)
                {
                    s = statusChamado.atendido;
                } else if(radStatusCancelado.Checked) {
                    s = statusChamado.cancelado;
                }
                else if (radStatusAndamento.Checked) {
                    s = statusChamado.emAndamento;
                }
                tipoServico objTipoServico = operaTipoServico.buscar(Int64.Parse(selTipoServico.Items[selTipoServico.SelectedIndex].Value));

                objChamado = operaChamado.buscar(Int64.Parse(Request["id"].ToString()));
                objChamado.Status = s;
                objChamado.Descricao = txtDescricao.Value.ToString();
                objChamado.TipoServico = objTipoServico;

                //Edição
                int cont = operaChamado.editar(objChamado);
                if (cont > 0)
                {
                    Response.Redirect("listagem.aspx?msg=1", false);
                }
                else
                {
                    Response.Redirect("listagem.aspx?msg=2", false);
                }
            }
        }
        private void bindTipoServico(Int64 codTipoServico)
        {
            selTipoServico.DataSource = operaTipoServico.listar("", "", 0);
            selTipoServico.DataTextField = "descr";
            selTipoServico.DataValueField = "codTipoServico";
            selTipoServico.DataBind();
            selTipoServico.Items.Insert(0, new ListItem("Selecione...", ""));

            if (codTipoServico != 0)
            {
                selTipoServico.Items.FindByValue(codTipoServico.ToString()).Selected = true;
            }
        }

    }
}